package com.zw.cloud.common.utils;

import io.jsonwebtoken.*;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtUtils {

    /**
     * 生成jwt
     */
    public static String geneJsonWebToken(String base64EncodedSecretKey,String payload){
        JwtBuilder builder = Jwts.builder()
                .setHeaderParam("alg", "HS256") // 设置算法（例如HS256）
                .setHeaderParam("typ", "JWT"); // 设置类型（例如JWT）
        // 设置主体信息（例如添加用户ID）
        //builder.claim("userId", "123456");
        builder.setPayload(payload);

        // 设置签名密钥和算法
        String secretKey = base64EncodedSecretKey;
        SignatureAlgorithm algorithm = SignatureAlgorithm.HS256;
        builder.signWith(algorithm, secretKey.getBytes());
        // 构建JWT并获取最终的令牌字符串
        return builder.compact();
    }


    public static Object parseJWTBody(String base64EncodedSecretKey,String token) {
        return Jwts.parser()
                .setSigningKey(base64EncodedSecretKey.getBytes()) // 设置签名密钥（与生成令牌时使用的密钥一致）
                .parse(token).getBody();
    }

    public static Jws<Claims> parseJWTClaims(String base64EncodedSecretKey,String token) {
        return Jwts.parser()
                .setSigningKey(base64EncodedSecretKey.getBytes()) // 设置签名密钥（与生成令牌时使用的密钥一致）
                .parseClaimsJws(token);
    }

    public static void main(String[] args) {
        String token = geneJsonWebToken("it9gcR9E16C3YkittoyQexIAJGeUPvckTLR5Jm1BhSf",
                "{\n" +
                        "    \"uid\":\"wx38237281a69df8d4\",\n" +
                        "    \"data\":{\n" +
                        "        \"msg\":\"你好\"\n" +
                        "    }\n" +
                        "}");
        System.out.println(token);
        System.out.println(parseJWTBody("it9gcR9E16C3YkittoyQexIAJGeUPvckTLR5Jm1BhSf",token));

        System.out.println(parseJWTBody("it9gcR9E16C3YkittoyQexIAJGeUPvckTLR5Jm1BhSf","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.-0PEtCSyoNPROXinaY2jlZa4ZUYAa43zLdIXDgxmS8I"));
        System.out.println(parseJWTClaims("it9gcR9E16C3YkittoyQexIAJGeUPvckTLR5Jm1BhSf","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.-0PEtCSyoNPROXinaY2jlZa4ZUYAa43zLdIXDgxmS8I"));

    }

}
